package org.hamcrest.generator;
import junit.framework.TestCase;
import java.io.PrintStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class QuickReferenceWriterTest extends TestCase {
private ByteArrayOutputStream actualBuffer;
private ByteArrayOutputStream expectedBuffer;
private PrintStream expected;
private QuickReferenceWriter writer;
@Override
protected void setUp() throws Exception {
super.setUp();
actualBuffer = new ByteArrayOutputStream();
writer = new QuickReferenceWriter(new PrintStream(actualBuffer));
expectedBuffer = new ByteArrayOutputStream();
expected = new PrintStream(expectedBuffer);
}
public void testWritesSimplifiedSummaryOfMatchers() throws IOException {
FactoryMethod namedMethod = new FactoryMethod("SomeClass", "someMethod", "unusedReturnType");
namedMethod.addParameter("Cheese", "a");
namedMethod.addParameter("int", "b");
namedMethod.setGenerifiedType("String");
writer.writeMethod("namedMethod", namedMethod);
FactoryMethod anotherMethod = new FactoryMethod("SomeClass", "anotherMethod", "unusedReturnType");
anotherMethod.setGenerifiedType("int");
writer.writeMethod("anotherMethod", anotherMethod);
expected.println(" [String] namedMethod(Cheese a, int b)");
expected.println(" [int] anotherMethod()");
verify();
}
public void testRemovesPackageNames() throws IOException {
FactoryMethod namedMethod = new FactoryMethod("SomeClass", "someMethod", "unusedReturnType");
namedMethod.addParameter("com.blah.Foo", "a");
namedMethod.addParameter("com.foo.Cheese<x.y.Zoo>", "b");
namedMethod.setGenerifiedType("java.lang.Cheese");
writer.writeMethod("namedMethod", namedMethod);
expected.println(" [Cheese] namedMethod(Foo a, Cheese<Zoo> b)");
verify();
}
private void verify() {
assertEquals(new String(expectedBuffer.toByteArray()), new String(actualBuffer.toByteArray()));
}
}